
#include "os_task.h"
#include "os_task_event.h"
#include "os_task_timer.h"

/**
 * ************************************************************************
 * @brief 进入工作模式
 * @param [in] param 
 * ************************************************************************
 */
void working_mode_enter(uint8_t *param)
{
    // do somethings
    task_event_publish(EVENT_COLLECT_FINISH, NULL, NULL);
}

static struct os_task_attr main_task_attr =
{
    .timer_type = TASK_TIMER_TYPE_PERIOD,
    .timeout = 1000,
    .task_enter_func = working_mode_enter,
};

/**
 * ************************************************************************
 * @brief 采集事件进入
 * @param [in] param_8u 
 * @param [in] param_16u 
 * @return int8_t 
 * ************************************************************************
 */
int8_t collect_event_enter(uint8_t *param_8u, uint16_t *param_16u)
{
    (void)param_8u;
    (void)param_16u;

    // do somethings

    return INT8_0;
}

/**
 * ************************************************************************
 * @brief app顶层事件，在main函数初始化外硬件外设后调用
 * ************************************************************************
 */
void app_task_enter(void)
{
    // 订阅退出工作模式事件
    task_event_subscribe(EVENT_COLLECT_FINISH, collect_event_enter);
    // 开始工作模式周期1s的任务
    main_task_attr.timeout = (int32_t)alg_user_params.meas_interval_ms;
    // 主任务优先级最高为0，数值越大优先级越低
    os_task_create(&main_task_attr, (uint8_t)0);
    // 启动任务循环
    os_task_loop();
    // os_task_loop函数后面不要加任务执行语句，因为不会执行
}